package com.dragon.backstage.service;

import com.dragon.backstage.domain.param.userOperateLog.UserOperateLogParam;
import com.dragon.backstage.domain.vo.userOperateLog.UserOperateLogDetailVo;
import com.dragon.backstage.domain.vo.userOperateLog.UserOperateLogVo;
import com.dragon.common.domain.vo.PaginationVo;
import com.dragon.common.utils.AjaxResult;
import com.dragon.interfaces.entity.UserOperateLog;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * <p>
 * 操作日志记录 服务类
 * </p>
 *
 * @author dragon
 * @since 2024-08-01 18:08:50
 */
public interface UserOperateLogService extends IService<UserOperateLog> {

    /**
     * 用户操作日志列表
     *
     * @param userOperateLogParam 查询参数
     * @return 用户操作日志列表
     */
    AjaxResult<PaginationVo<UserOperateLogVo>> userOperateLogList(UserOperateLogParam userOperateLogParam);

    /**
     * 用户操作日志详情
     *
     * @param operateId 用户操作日志ID
     * @return 用户操作日志详情
     */
    AjaxResult<UserOperateLogDetailVo> userOperateLogDetail(Long operateId);

    /**
     * 删除用户操作日志
     *
     * @param operateIds 用户操作日志ID
     * @return 删除结果
     */
    AjaxResult<Void> deleteUserOperateLog(Long[] operateIds);

    /**
     * 导出用户操作日志
     *
     * @param response            响应
     * @param userOperateLogParam 查询参数
     */
    void exportUserOperateLog(HttpServletResponse response, UserOperateLogParam userOperateLogParam) throws IOException;

    /**
     * 清空用户操作日志
     *
     * @return 清空结果
     */
    AjaxResult<Void> cleanUserOperateLog();

}
